/*
 * ShapeObject.h
 *
 *  Created on: 2009/02/17
 *      Author: Yongshik Cho
 */

#ifndef SHAPE_H_
#define SHAPE_H_

#include "RenderObject.h"
#include "core/Curve2D.h"
#include "core/Color.h"
#include "sqplus/sqplus.h"
using namespace SqPlus;


class ShapeObject: public RenderObject, public Curve2D
{
public:
	enum LINESTYLE_TYPE
	{
		LINE_NONE = 0,
		LINE_SOLID
	};

	enum FILLSTYLE_TYPE
	{
		FILL_NONE = 0,
		FILL_SOLID
	};

public:
	ShapeObject();
	virtual ~ShapeObject();

public:
	virtual const Color& getLineColor() const { return mLineColor; }
	virtual void setLineColor(const Color& color) { mLineColor = color; }

	virtual const Color getFillColor() const { return mFillColor; }
	virtual void setFillColor(const Color& color) { mFillColor = color; }

	virtual const uint8 getLineStyle() const { return mLineStyle; }
	virtual void setLineStyle(uint8 style) { mLineStyle = style; }

	virtual const uint8 getFillStyle() const { return mFillStyle; }
	virtual void setFillStyle(uint8 style) { mFillStyle = style; }

	virtual const float getLineWidth() const { return mLineWidth; }
	virtual void setLineWidth(float width) { mLineWidth = width; }

	virtual const Rect2D& getRect();
	virtual const Rect2D getViewRect();

private:
	Color	mLineColor;
	Color	mFillColor;
	uint8	mLineStyle;
	uint8	mFillStyle;
	float	mLineWidth;
};

//must be declared here
DECLARE_INSTANCE_TYPE(ShapeObject)

#endif /* SHAPE_H_ */
